package com.turnengine.client.local.player.bean;

import com.javabi.codebuilder.generated.IGeneratedBean;
import com.turnengine.client.local.alliance.enums.AllianceMemberType;
import com.turnengine.client.local.player.enums.PlayerEmailAlerts;
import com.turnengine.client.local.unit.bean.IUnitCount;
import java.util.List;

/**
 * The I Player.
 */
public interface IPlayer extends IGeneratedBean, Comparable<IPlayer> {

	/**
	 * Returns the id.
	 * @return the id.
	 */
	int getId();

	/**
	 * Returns the name.
	 * @return the name.
	 */
	String getName();

	/**
	 * Returns the user id.
	 * @return the user id.
	 */
	int getUserId();

	/**
	 * Returns the faction id.
	 * @return the faction id.
	 */
	int getFactionId();

	/**
	 * Returns the request id.
	 * @return the request id.
	 */
	int getRequestId();

	/**
	 * Returns the alliance id.
	 * @return the alliance id.
	 */
	int getAllianceId();

	/**
	 * Returns the leave turns.
	 * @return the leave turns.
	 */
	int getLeaveTurns();

	/**
	 * Returns the member type.
	 * @return the member type.
	 */
	AllianceMemberType getMemberType();

	/**
	 * Returns the email alerts.
	 * @return the email alerts.
	 */
	PlayerEmailAlerts getEmailAlerts();

	/**
	 * Returns the unit list.
	 * @return the unit list.
	 */
	List<IUnitCount> getUnitList();

	/**
	 * Sets the id.
	 * @param id the id to set.
	 */
	void setId(int id);

	/**
	 * Sets the name.
	 * @param name the name to set.
	 */
	void setName(String name);

	/**
	 * Sets the user id.
	 * @param userId the user id to set.
	 */
	void setUserId(int userId);

	/**
	 * Sets the faction id.
	 * @param factionId the faction id to set.
	 */
	void setFactionId(int factionId);

	/**
	 * Sets the request id.
	 * @param requestId the request id to set.
	 */
	void setRequestId(int requestId);

	/**
	 * Sets the alliance id.
	 * @param allianceId the alliance id to set.
	 */
	void setAllianceId(int allianceId);

	/**
	 * Sets the leave turns.
	 * @param leaveTurns the leave turns to set.
	 */
	void setLeaveTurns(int leaveTurns);

	/**
	 * Sets the member type.
	 * @param memberType the member type to set.
	 */
	void setMemberType(AllianceMemberType memberType);

	/**
	 * Sets the email alerts.
	 * @param emailAlerts the email alerts to set.
	 */
	void setEmailAlerts(PlayerEmailAlerts emailAlerts);

	/**
	 * Sets the unit list.
	 * @param unitList the unit list to set.
	 */
	void setUnitList(List<IUnitCount> unitList);
}
